package com.smit.dvb.update;

import java.util.ArrayList;
import java.util.List;

/**
 * DVB升级固件控制
 */
public class UpdateControl {
    /**
     * 底层通知上面，请求固件信息
     */
    public static final int MSG_UPDATE_REQUEST_FIRMWARE = 701;
    /**
     * 底层通知上面，固件不需要更新
     */
    public static final int MSG_UPDATE_NO_NEED_UPDATE = 702;
    /**
     * 底层通知上面，固件更新开始
     */
    public static final int MSG_UPDATE_START = 703;
    /**
     * 底层通知上面，固件更新进度
     */
    public static final int MSG_UPDATE_PROGRESS = 704;
    /**
     * 底层通知上面，固件更新完成
     */
    public static final int MSG_UPDATE_FINISH = 705;
    /**
     * 底层通知上面，固件更新成功
     */
    public static final int MSG_UPDATE_SUCCESS = 706;
    /**
     * 底层通知上面，固件更新出错
     */
    public static final int MSG_UPDATE_ERROR = 707;


    private final List<IUpdateCallback> updateCallbackList = new ArrayList<IUpdateCallback>();

    /**
     * <p> 添加一个update回调 <br/>
     *
     * @param callback 回调接口
     */
    public void addCallback(IUpdateCallback callback) {
        if (!updateCallbackList.contains(callback)) {
            updateCallbackList.add(callback);
        }
    }

    /**
     * <p> 移除一个update回调 <br/>
     *
     * @param callback 回调接口<br/>
     */
    public void removeCallback(IUpdateCallback callback) {
        if (updateCallbackList.contains(callback)) {
            updateCallbackList.remove(callback);
        }
    }

    /**
     * <p> 获取所有update回调对象 <br/>
     *
     * @return 返回所有注册进来的回调
     */
    public List<IUpdateCallback> getCallbackList() {
        return updateCallbackList;
    }
}